home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / VMSTUFF_ / VMLIBRAR.H next >
Text File  |  1990-04-27  |  2KB  |  85 lines

  1. /*
  2.  VMLibrary - Virtual Memory Library Copyright (C) 1990 by JK Software
  3.                  Version 1.0
  4.                  
  5. NOTE: IF YOU WILL BE USING THIS LIBRARY WITH A COMPILER OTHER THAN THINK C
  6.       PLEASE MAKE SURE THAT INTEGER DATA TYPES ARE DEFINED AS 16 BIT. THINK C
  7.       INT'S ARE 16 BIT BUT MPW USES 32 BIT INTS. CHANGE THE DATA TYPES IN THIS
  8.       HEADER FILE SO THAT THE INT'S ARE A 16 BIT INTEGER.                  
  9.         
  10. */
  11.  
  12.  
  13. #ifndef    _VMLibrary_
  14. #define _VMLibrary_
  15. #endif
  16.  
  17. #define    VMSWAPFILE                "\pVM Swap File"
  18. #define    HIGHEST_USAGE             16000000
  19. #define    DEFAULT_SYSTEM_MINIMUM    65536
  20. #define    INMEMORY    0x0001
  21. #define    ONDISK        0x0002
  22. #define    ISLOCKED    0x0004
  23. #define    ISDIRTY        0x0008
  24.  
  25.  
  26. typedef struct page
  27.     {
  28.     Handle        memoryH;
  29.     long        lrucount;
  30.     long        blocksize;
  31.     int            statusflags;
  32.     long        diskoffset;
  33.     struct page  **vmnextpageH;
  34.     } vmpage, **vmpageH;
  35.     
  36.  
  37.  
  38. typedef struct
  39.     {
  40.      struct page        **vmfirstpageH;
  41.     int            vmVolumeRefNum;                
  42.     Str255        vmSwapFile;
  43.     int            vmFileRefNum;                
  44.     long        vmpagecount;
  45.     long        vmPhysicalMemAvail;
  46.     long        vmVirtualMemAllocated;
  47.     long        vmMinSysMemory;
  48.     long        vmPageAccesses;
  49.     long        vmSwapOutCount;
  50.     long        vmSwapInCount;
  51.     } vmcontrol, **vmcontrolH;
  52.     
  53. typedef struct
  54.     {
  55.     long        vmpagecount;
  56.     long        vmPhysicalMemAvail;
  57.     long        vmVirtualMemAllocated;
  58.     long        vmMinSysMemory;
  59.     long        vmPageAccesses;
  60.     long        vmSwapOutCount;
  61.     long        vmSwapInCount;
  62.     } vmstatus, *vmstatusPtr;
  63.  
  64.  
  65. extern pascal vmcontrolH     VMInit(Str255 UserFileName, int UserVolRefNum);    
  66. extern pascal Boolean        VMTerminate(vmcontrolH    vmcH);
  67. extern pascal Boolean        VMSetSysMinMemory(vmcontrolH vmcH, Size MinMem);
  68. extern pascal Size            VMGetSysMinMemory(vmcontrolH vmcH);
  69. extern pascal vmpageH        VMNewHandle(vmcontrolH vmcH, long blocksize);    
  70. extern pascal Ptr             VMHLock(vmcontrolH vmcH, vmpageH pageH);
  71. extern pascal Boolean         VMHUnlock(vmcontrolH vmcH, vmpageH pageH);
  72. extern pascal Boolean         VMDisposeH(vmcontrolH vmcH, vmpageH pageH);
  73. extern pascal Boolean         VMMakePageDirty(vmcontrolH vmcH, vmpageH pageH);
  74. extern pascal Boolean        VMGetStatus(vmcontrolH vmcH, vmstatusPtr statusPtr);
  75.  
  76. extern pascal Handle         AllocateMemory(vmcontrolH vmcH, long blocksize);
  77. extern pascal vmpageH         FindLRU(vmcontrolH vmcH, long blocksize);
  78. extern pascal Boolean         AddToList(vmcontrolH vmcH, vmpageH pageH);
  79.  
  80. extern pascal Boolean        SwapPageOut(vmcontrolH vmcH, vmpageH pageH);
  81. extern pascal Boolean         SwapPageIn(vmcontrolH vmcH, vmpageH pageH, Handle newH);
  82.  
  83. extern pascal vmpageH         FindPreviousHandlePage(vmpageH pageH, vmpageH thepageH);
  84.  
  85.